/*
 * Expression.h
 *
 *  Created on: 24 nov. 2013
 *      Author: baker
 */

#ifndef EXPRESSION_H_
#define EXPRESSION_H_
#include <iostream>


enum Operateur {Minus, Plus,Mult, Div, Nothing};
class Expression {
public:
	/**
	 * Construteur d'un noeud
	 * @right : terme de droite
	 * @left  : terme de gauche
	 */
	Expression(Term* right, Term* left, enum Operateur op);


	/**
	 * Construteur d'une expression Int ou Float
	 * right et left égale à term
	 * operateur = nothing
	 * @term : terme courant
	 */
	Expression(Term* term);

	/**
	 * Operateur du noeud
	 */
	Operateur get_operateur();
	/**
	 * Expression de droite du noeud courant
	 */
	Term* get_right();
	/**
	 * Expresion de gauche du noeud courant
	 */
	Term* get_left();
	/***
	 * @return le resultat de l'expression arthmetique
	 */
	float result();
	/**
	 * Destructeur
	 */
	virtual ~Expression();
private:
	 Term* _left,  _right;
	 enum Operateur _op;
};

#endif /* EXPRESSION_H_ */
